1. Technical Field
The present disclosure relates to storage systems and, more specifically, to caching and logging of data, including metadata, in non-volatile random access memory (NVRAM) of a storage system.
2. Background Information
A storage system typically includes one or more storage devices, such as solid state drives (SSDs) embodied as flash storage devices, into which information may be entered, and from which the information may be obtained, as desired. The storage system may logically organize the information stored on the devices as storage containers, such as files or logical units (LUNs). Each storage container may be implemented as a set of data structures, such as data blocks that store data for the storage containers and metadata blocks that describe the data of the storage containers. For example, the metadata may describe, e.g., identify, storage locations on the devices for the data.
Some types of SSDs, especially those with NAND flash components, move data among those components at the granularity of a page, e.g., 8 KB. In contrast, the size and alignment of writes from a storage system to SSDs may need to be more flexible in order to maximize capacity and media wear efficiency, for example to accommodate misaligned write accesses, to allow for data compression to arbitrary sizes, or to incorporate a small amount of storage system metadata contiguous with the data. Additionally, deferred processing of write requests may be advantageous in order to improve performance and wear efficiency, e.g., batching writes to improve Redundant Array of Independent Disk (RAID) efficiency, or evaluating opportunities for data de-duplication. Thus, fast and efficient acknowledgement of the I/O requests by the storage system prior to writing data to SSDs is desirable so as to reduce latency from the perspective of a host.
However, data associated with an I/O request may be lost when power is interrupted on the storage system. This is particularly problematic when the I/O request, e.g., a write request, from the host has been acknowledged by the storage system and write data associated with the request has been sent to the one or more storage devices prior to a power loss, i.e., the storage device has buffered the data but power is interrupted prior to permanent storage on the device. Enterprise grade SSDs may include a feature that permits some or all of the buffered data to be stored to its flash storage device components even when power fails, e.g., by providing internal capacitors or batteries. But lower cost consumer grade SSDs have no such feature, so that data may be lost when power fails. Thus, there is a need to provide low latency for I/O requests to a storage system using low cost storage while avoiding data loss.